package Q2;
/*
编程获取两个指定字符串中的最大相同子串
* */
import java.util.ArrayList;
import java.util.List;

public class largeSubstr {
//    1. 自定义三个成员变量，并创建含构造方法
    String s1 = new String();
    String s2 = new String();
    String comSub = new String();

    public largeSubstr(String s1, String s2) {
        this.s1 = s1;
        this.s2 = s2;
    }
//    2. 比较并获取他们的最大子串：将短的那个串进行长度依次递减的子串与较长的串比较。
//    2.1 先获取短的那个字符串
    public List getSmallStr(){
         List<String> order = new ArrayList();
        if(s1.length() <= s2.length()){
            order.add(s1);
            order.add(s2);
            return order;
        }
        else{
            order.add(s2);
            order.add(s1);
            return order;
        }
    }
//    2.2 遍历将两个字符串进行一一比较，并获取他们相同的最大子字符串
    public String getLargeSub(){
       String smallerStr = (String) getSmallStr().get(0);
       String otherStr = (String) getSmallStr().get(1);
        for (int i = 0; i < smallerStr.length(); i++){
            int j = 0;
            int c = 0;
            while(j < otherStr.length() && i+c <= smallerStr.length() && j+c <= otherStr.length()){
                if (smallerStr.substring(i,i+c).equals(otherStr.substring(j,j+c))){
                    if (0 == comSub.length() || c > comSub.length()){
                        comSub = smallerStr.substring(i, i+c);
                    }
                    c++;
                }
                else{
                    j++;
                }
            }
        }
        return comSub;
    }
}